Method and system for programming multi-level cell memory

ABSTRACT

A method and a system for programming a multi-level cell (MLC) memory are provided. A first count is 1 initially. The method comprises the following steps. A first energy is set. The first energy is applied to alter a resistance of a cell of the MLC memory. The first count is increased by 1 after performing the step of applying the first energy. In the step of setting the first energy, the first energy is 
     
       
         
           
             
               a 
                
               
                   
               
                
               first 
                
               
                   
               
                
               initial 
                
               
                   
               
                
               energy 
             
             
               a 
                
               
                   
               
                
               predetermined 
                
               
                   
               
                
               value 
             
           
         
       
     
     initially and the first energy is changed by increasing or decreasing 
     
       
         
           
             
               
                 the 
                  
                 
                     
                 
                  
                 first 
                  
                 
                     
                 
                  
                 initial 
                  
                 
                     
                 
                  
                 energy 
               
               
                 the 
                  
                 
                     
                 
                  
                 predetermined 
                  
                 
                     
                 
                  
                 
                   value 
                   
                     the 
                      
                     
                         
                     
                      
                     first 
                      
                     
                         
                     
                      
                     count 
                   
                 
               
             
             .

BACKGROUND

1. Technical Field

The disclosure relates in general to a method and a system forprogramming a memory, and more particularly to a method and a system forprogramming a multi-level cell (MLC) memory.

2. Description of the Related Art

With the development of memory technology, a multi-level cell (MLC)memory is invented. The MLC memory is a memory capable of storing morethan a single bit of information.

For programming the MLC memory to be a particular level, an incrementalstep pulse programming (ISPP) method is used. By performing the ISPPmethod, the level of the memory is increased step by step until thethreshold voltage reaches a target level. In the ISPP method,partial-erase is impossible and single erasing step will remove allelectrons from the floating gate/charge trapping medium. The programmingstep consumption of the ISPP method is O(N) for a MLC memory having Nsteps. The time consumption of programming the MLC memory is needed tobe improved.

SUMMARY

The disclosure is directed to a method and a system for programming amulti-level cell (MLC) memory. The method and the system use binarydecision trees to improve the programming step consumption and allowadjustment for the data retention of the MLC memory.

According to a first aspect of the present disclosure, a method forprogramming a multi-level cell (MLC) memory is provided. A first countis 1 initially. The method comprises the following steps. A first energyis set. The first energy is applied to alter a resistance of a cell ofthe MLC memory. The first count is increased by 1 after performing thestep of applying the first energy. In the step of setting the firstenergy, the first energy is

$\frac{a\mspace{14mu} {first}\mspace{14mu} {initial}\mspace{14mu} {energy}}{a\mspace{14mu} {predetermined}\mspace{14mu} {value}}$

initially and the first energy is changed by increasing or decreasing

$\frac{{the}\mspace{14mu} {first}\mspace{14mu} {initial}\mspace{14mu} {energy}}{{the}\mspace{14mu} {predetermined}\mspace{14mu} {value}^{{the}\mspace{14mu} {first}\mspace{14mu} {count}}}.$

According to a second aspect of the present disclosure, a system forprogramming a multi-level cell (MLC) memory is provided. The systemincludes a processing unit, a programming unit and first counter. Theprocessing unit is for setting a first energy. The programming unit isfor applying the first energy to alter a resistance of a cell of the MLCmemory. The first counter is for storing a first count. The first countis 1 initially and is increased by 1 after the cell of the MLC memory isapplied the first energy. The first energy is

$\frac{a\mspace{14mu} {first}\mspace{14mu} {initial}\mspace{14mu} {energy}}{a\mspace{14mu} {predetermined}\mspace{14mu} {value}}$

initially and the first energy is changed by increasing or decreasing

$\frac{{the}\mspace{14mu} {first}\mspace{14mu} {initial}\mspace{14mu} {energy}}{{the}\mspace{14mu} {predetermined}\mspace{14mu} {value}^{{the}\mspace{14mu} {first}\mspace{14mu} {count}}}.$

The above and other aspects of the disclosure will become betterunderstood with regard to the following detailed description of thenon-limiting embodiment(s). The following description is made withreference to the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows a system for programming a multi-level cell (MLC) memory.

FIG. 2 shows a flow chart of a method for programming the MLC memory;

FIG. 3 shows an exemplificative binary decision tree of FIG. 2;

FIG. 4 shows an exemplificative resistance adjusting curve;

FIG. 5 shows a resistance distribution curve of the MLC memory which isprogrammed under a condition that the limited value is 8; and

FIG. 6 shows a resistance distribution curve of the MLC memory which isprogrammed under a condition that the limited value is 12.

DETAILED DESCRIPTION

Preferred embodiments are disclosed below for elaborating the invention.Binary decision trees are used to improve the programming step and timeconsumption and allow adjustment for the data retention of a multi-levelcell (MLC) memory. The following embodiments are for the purpose ofelaboration only, not for limiting the scope of protection of theinvention. Besides, secondary elements are omitted in the followingembodiments to highlight the technical features of the invention.

Please referring to FIG. 1, FIG. 1 shows a system 100 for programming amulti-level cell (MLC) memory 200. The system 100 includes a processingunit 110, a programming unit 120, a first counter 130, a second counter140, a third counter 150 and a storage unit 160.

The processing unit 110 is for performing a plurality of processingprocedures and calculating procedures. For example, the processing unit110 may be a chip, a circuit board, a storage medium storing a pluralityof program codes and a circuit having a function for performing theprocessing procedures and the calculating procedures.

The programming unit 120 is for programming the MLC memory 200 via afirst controller 310 and a second controller 320. For example, theprogramming unit 120 may be a chip, a circuit board, a storage mediumstoring a plurality of program codes and a circuit having a function forprogramming the MLC memory 200.

Each of the first counter 130, the second counter 140 and the thirdcounter 150 is for storing and accumulating a counter. For example, thefirst counter 130, the second counter 140 and the third counter 150 maybe a chip, a circuit board, a storage medium storing a plurality ofprogram codes and a circuit having a function for storing andaccumulating a counter.

The storage unit 160 is for storing varied data. For example, thestorage unit 160 may be a register, a memory or a hard disk.

Please referring to FIGS. 2 to 4, FIG. 2 shows a flow chart of a methodfor programming the MLC memory 200, FIG. 3 shows exemplificative binarydecision trees of FIG. 2, and FIG. 4 shows an exemplificative resistanceadjusting curve. The method uses the binary decision trees to improvethe programming step and time consumption and allow adjustment for thedata retention of the MLC memory 200. In the present embodiment, stepsS101 to S107 are used for performing a reset procedure to raise theresistance of the cell of the MLC memory 200, and steps S201 to S207 areused for performing a set procedure to descend the resistance of thecell of the MLC memory 200. The resistance of the cell of the MLC memory200 can be raised or descended to converge toward a target range.

Please referring to FIGS. 3 and 4, an example is illustrated. The targetrange is set to be 450 to 550 kohm. The method is terminated if theresistance of the cell of the MLC memory 200 is within the target rageor the number of the iterations is larger than a limited value, such as8.

At iteration 1, the cell of the MLC memory 200 is applied a firstenergy, such as

$\frac{E_{0}}{2}$

to perform the reset procedure, and the resistance is raised to be 194.3kohm which is lower than the target range.

At iteration 2, the cell of the MLC memory 200 is applied the firstenergy, such as

$\frac{3\; E_{0}}{4}\left( {= {\frac{E_{0}}{2} + \frac{E_{0}}{4}}} \right)$

to perform the reset procedure, and the resistance is raised to be 4000kohm which is higher than the target range.

At iteration 3, the cell of the MLC memory 200 is applied a secondenergy, such as

$\frac{E_{0}}{2}$

to perform the set procedure, and the resistance is descended to be 375kohm which is lower than the target range.

At iteration 4, the cell of the MLC memory 200 is applied the firstenergy, such as

$\frac{5\; E_{0}}{8}\left( {= {\frac{3\; E_{0}}{4} - \frac{E_{0}}{8}}} \right)$

to perform the reset procedure, and the resistance is raised to be 1026kohm which is higher than the target range.

At iteration 5, the cell of the MLC memory 200 is applied the secondenergy, such as

$\frac{E_{0}}{4}\left( {= {\frac{E_{0}}{2} - \frac{E_{0}}{4}}} \right)$

to perform the set procedure, and the resistance is descended to be 415kohm which is lower than the target range.

At iteration 6, the cell of the MLC memory 200 is applied the firstenergy, such as

$\frac{9\; E_{0}}{16}\left( {= {\frac{5\; E_{0}}{8} - \frac{E_{0}}{16}}} \right)$

to perform the reset procedure, and the resistance is raised to be 541kohm which is within the target range. After the iteration 6, the methodis terminated.

Base on above, if the resistance is larger than the target range, thenthe cell of the MLC memory 200 is applied the second energy to performthe reset procedure at the next iteration; if the resistance is notlarger than the target range, then the cell of the MLC memory 200 isapplied the first energy to perform the set procedure at the nextiteration.

The first energy is

$\frac{E_{0}}{2}$

at iteration 1 and changed to be

$\frac{3\; E_{0}}{4}$

by increasing

$\frac{E_{0}}{4}$

at iteration 2. Then, the first energy is changed to be

$\frac{5\; E_{0}}{8}$

by decreasing

$\frac{E_{0}}{8}.$

Next, the first energy is changed to be

$\frac{9\; E_{0}}{16}$

by decreasing

$\frac{E_{0}}{16}$

at iteration 6.

That is to say, the first energy is changed by increasing, if the cellof the MLC memory 200 is previously applied the first energy; the firstenergy is changed by decreasing, if the cell of the MLC memory 200 ispreviously applied the second energy. The amount of the change of thefirst energy is

$\frac{E_{0}}{2^{{first}\mspace{14mu} {count}}},$

wherein the first count is the number of the iterations applying thefirst energy.

The second energy is

$\frac{E_{0}}{2}$

at iteration 3 and changed to be

$\frac{E_{0}}{4}$

by decreasing

$\frac{E_{0}}{4}$

at iteration 5.

That is to say, the second energy is changed by increasing, if the cellof the MLC memory 200 is previously applied the second energy; thesecond energy is changed by decreasing, if the cell of the MLC memory200 is previously applied the first energy. The amount of the change ofthe second energy is

$\frac{E_{0}}{2^{{second}\mspace{14mu} {count}}},$

wherein the second count is the number of the iterations applying thesecond energy.

In one embodiment, the initial of the first energy, i.e.

$\frac{E_{0}}{2},$

can be

$\frac{a\mspace{14mu} {first}\mspace{14mu} {initial}\mspace{14mu} {energy}}{a\mspace{14mu} {predetermined}\mspace{14mu} {value}},$

wherein the first initial energy can be a maximum of the first energy,and the predetermined value can be a real number.

Moreover, the initial of the second energy,

${i.e.\mspace{14mu} \frac{E_{0}}{2}},$

can be

$\frac{a\mspace{14mu} {second}\mspace{14mu} {initial}\mspace{14mu} {energy}}{{the}\mspace{14mu} {predetermined}\mspace{14mu} {value}},$

wherein the second initial energy can be a maximum of the second energy,and the predetermined value can be a real number. The first initialenergy can be identical to or different from the second initial energy.

The method for programming the MLC memory 200 is illustrated by theflowchart of FIG. 2. At beginning, the first count stored in the firstcounter 130, the second count stored in the second counter 140 and thethird counter stored in the third counter 150 are 1 initially.

In step S101, the first energy is set by the processing unit 110. Thefirst energy can be measured according to a current amplitude, a currentpulse width, a voltage amplitude or a voltage pulse width. The firstenergy is

$\frac{{the}\mspace{14mu} {first}\mspace{14mu} {initial}\mspace{14mu} {energy}}{{the}\mspace{14mu} {predetermined}\mspace{14mu} {value}}$

initially.

Next, in step S102, the first energy is applied to raise the resistanceof the cell of the MLC memory 200 by the programming unit 120.

Then, in step S103, the resistance of the cell of the MLC memory 200 isread by the processing unit 110.

Afterwards, in step S104, a programming mode is recorded in the storageunit 160 for indicating that the cell of the MLC memory 200 ispreviously applied the first energy or the second energy. The firstcounter 130 and third counter 150 respectively increase the first countand the third count by 1 after performing the step S102.

Next, in step S105, whether the resistance of the cell of the MLC memory200 is within the target range is determined by the processing unit 110.If the resistance of the cell of the MLC memory 200 is within the targetrange, then the process terminated; if the resistance of the cell of theMLC memory 200 is within the target range, then the process proceeds tostep S106.

Then, in step S106, whether the third count is larger than the limitedvalue is determined by the processing unit 110. If the third count islarger than the limited value, then the process terminates; if the thirdcount is not larger than the limited value, then the process proceeds tostep S107.

Afterwards, in step S107, whether the resistance of the cell of the MLCmemory 200 is larger than the target range is determined by theprocessing unit 110. If the resistance of the cell of the MLC memory 200is larger than the target range, then the process proceeds to step S201to descend the resistance; if the resistance of the cell of the MLCmemory 200 is not larger than the target range, then the processproceeds to step S101 to raise the resistance.

In step S201, the second energy is set by the processing unit 110. Thesecond energy can be measured according to the current amplitude, thecurrent pulse width, the voltage amplitude or the voltage pulse width.The second energy is

$\frac{{the}\mspace{14mu} {second}\mspace{14mu} {initial}\mspace{14mu} {energy}}{{the}\mspace{14mu} {predetermined}\mspace{14mu} {value}}$

initially.

Next, in step S202, the second energy is applied to descend theresistance of the cell of the MLC memory 200 by the programming unit120.

Then, in step S203, the resistance of the cell of the MLC memory 200 isread by the processing unit 110.

Afterwards, in step S204, the programming mode is recorded in thestorage unit 160 for indicating that the cell of the MLC memory 200 ispreviously applied the first energy or the second energy. The secondcounter 140 and third counter 150 respectively increase the second countand the third count by 1 after performing the step S202.

Next, in step S205, whether the resistance of the cell of the MLC memory200 is within the target range is determined by the processing unit 110.If the resistance of the cell of the MLC memory 200 is within the targetrange, then the process terminated; if the resistance of the cell of theMLC memory 200 is not within the target range, then the process proceedsto step S206.

Then, in step S206, whether the third count is larger than the limitedvalue is determined by the processing unit 110. If the third count islarger than the limited value, then the process terminates; if the thirdcount is not larger than the limited value, then the process proceeds tostep S207.

Afterwards, in step S207, whether the resistance of the cell of the MLCmemory 200 is larger than the target range is determined by theprocessing unit 110. If the resistance of the cell of the MLC memory 200is larger than the target range, then the process proceeds to step S201to descend the resistance; if the resistance of the cell of the MLCmemory 200 is not larger than the target range, then the processproceeds to step S101 to raise the resistance.

In FIG. 2, after performing the step S107 or the step S207, the methodmay return to step S101. In step S101, the first energy is changed byincreasing

$\frac{{the}\mspace{14mu} {first}\mspace{14mu} {initial}\mspace{14mu} {energy}}{{the}\mspace{14mu} {predetermined}\mspace{14mu} {value}^{{the}\mspace{14mu} {first}\mspace{14mu} {count}}},$

if the cell of the MLC memory 200 is previously applied the firstenergy; the first energy is changed by decreasing

$\frac{{the}\mspace{14mu} {first}\mspace{14mu} {initial}\mspace{14mu} {energy}}{{the}\mspace{14mu} {predetermined}\mspace{14mu} {value}^{{the}\mspace{14mu} {first}\mspace{14mu} {count}}},$

if the cell of the MLC memory 200 is previously applied the secondenergy.

In FIG. 2, after performing the step S107 or the step S207, the methodmay return to step S201. In step S201, the second energy is changed byincreasing

$\frac{{the}\mspace{14mu} {second}\mspace{14mu} {initial}\mspace{14mu} {energy}}{{the}\mspace{14mu} {predetermined}\mspace{14mu} {value}^{{the}\mspace{14mu} {first}\mspace{14mu} {count}}},$

if the cell of the MLC memory 200 is previously applied the secondenergy; the second energy is changed by decreasing

$\frac{{the}\mspace{14mu} {second}\mspace{14mu} {initial}\mspace{14mu} {energy}}{{the}\mspace{14mu} {predetermined}\mspace{14mu} {value}^{{the}\mspace{14mu} {first}\mspace{14mu} {count}}},$

if the cell of the MLC memory 200 is previously applied the firstenergy.

Base on this method, for programming the MLC memory 200 having N stepsto be a particular level, it is averagely only needed log N number ofprogramming steps. The programming step consumption reduced to be O(logN).

Please referring to FIGS. 5 and 6, FIG. 5 shows a resistancedistribution curve C11 of the MLC memory 200 which is programmed under acondition that the limited value is 8, and FIG. 6 shows a resistancedistribution curve C21 of the MLC memory 200 which is programmed under acondition that the limited value is 12. As time goes by, the resistancedistribution curve C11 of FIG. 5 may be shifted to be a resistancedistribution curve C12 and the resistance distribution curve C21 of FIG.6 may be shifted to be the resistance distribution curve C22. The widthof each peak of the resistance distribution curve C12 is larger thanthat of the resistance distribution curve C22. That is to say, thelimited value can be used to adjust the resistance distribution to fitflexible data retention requirements.

While the disclosure has been described by way of example and in termsof the exemplary embodiment(s), it is to be understood that thedisclosure is not limited thereto. On the contrary, it is intended tocover various modifications and similar arrangements and procedures, andthe scope of the appended claims therefore should be accorded thebroadest interpretation so as to encompass all such modifications andsimilar arrangements and procedures.

What is claimed is:
 1. A method for programming a multi-level cell (MLC)memory, wherein a first count is 1 initially, and the method comprises:setting a first energy; applying the first energy to alter a resistanceof a cell of the MLC memory; and increasing the first count by 1 afterperforming the step of applying the first energy; wherein in the step ofsetting the first energy, the first energy is$\frac{a\mspace{14mu} {first}\mspace{14mu} {initial}\mspace{14mu} {energy}}{a\mspace{14mu} {predetermined}\mspace{14mu} {value}}$initially and the first energy is changed by increasing or decreasing$\frac{{the}\mspace{14mu} {first}\mspace{14mu} {initial}\mspace{14mu} {energy}}{{the}\mspace{14mu} {predetermined}\mspace{14mu} {value}^{{the}\mspace{14mu} {first}\mspace{14mu} {count}}}.$2. The method for programming the MLC memory according to claim 1,wherein the predetermined value is
 2. 3. The method for programming theMLC memory according to claim 1, wherein a second count is 1 initially,the method further comprises: setting a second energy; applying thesecond energy to alter the resistance of the cell of the MLC memory; andincreasing the second count by 1 after performing the step of applyingthe second energy; wherein in the step of setting the second energy, thesecond energy is$\frac{a\mspace{14mu} {second}\mspace{14mu} {initial}\mspace{14mu} {energy}}{{the}\mspace{14mu} {predetermined}\mspace{14mu} {value}}$initially, the second energy is changed by increasing or decreasing$\frac{{the}\mspace{14mu} {second}\mspace{14mu} {initial}\mspace{14mu} {energy}}{{the}\mspace{14mu} {predetermined}\mspace{14mu} {value}^{{the}\mspace{14mu} {second}\mspace{14mu} {count}}},$the step of applying the first energy is used for performing a resetprocedure on the cell of the MLC memory, and the step of applying thesecond energy is used for performing a set procedure on the cell of theMLC memory.
 4. The method for programming the MLC memory according toclaim 3, wherein the first energy and the second energy are measuredaccording to a current amplitude, a current pulse width, a voltageamplitude or a voltage pulse width.
 5. The method for programming theMLC memory according to claim 3, wherein the first initial energy isidentical to the second initial energy.
 6. The method for programmingthe MLC memory according to claim 3, wherein the first initial energy isdifferent from the second initial energy.
 7. The method for programmingthe MLC memory according to claim 3, further comprising: determiningwhether the resistance of the cell of the MLC memory is within a targetrange; determining whether the resistance of the cell of the MLC memoryis larger than the target range or if the resistance of the cell of theMLC memory is not within the target range; wherein if the resistance ofthe cell of the MLC memory is larger than the target range, then themethod proceeds to the step of setting the second energy; if theresistance of the cell of the MLC memory is not larger than the targetrange, then the method proceeds to the step of setting the first energy.8. The method for programming the MLC memory according to claim 7,wherein in the step of setting the first energy, the first energy ischanged by increasing$\frac{{the}\mspace{14mu} {first}\mspace{14mu} {initial}\mspace{14mu} {energy}}{{the}\mspace{14mu} {predetermined}\mspace{14mu} {value}^{{the}\mspace{14mu} {first}\mspace{14mu} {count}}},$if the cell of the MLC memory is previously applied the first energy;the first energy is changed by decreasing$\frac{{the}\mspace{14mu} {first}\mspace{14mu} {initial}\mspace{14mu} {energy}}{{the}\mspace{14mu} {predetermined}\mspace{14mu} {value}^{{the}\mspace{14mu} {first}\mspace{14mu} {count}}},$if the cell of the MLC memory is previously applied the second energy.9. The method for programming the MLC memory according to claim 7,wherein in the step of setting the second energy, the second energy ischanged by increasing$\frac{{the}\mspace{14mu} {second}\mspace{14mu} {initial}\mspace{14mu} {energy}}{{the}\mspace{14mu} {predetermined}\mspace{14mu} {value}^{{the}\mspace{14mu} {second}\mspace{14mu} {count}}},$if the cell of the MLC memory is previously applied the second energy;the first energy is changed by decreasing$\frac{{the}\mspace{14mu} {second}\mspace{14mu} {initial}\mspace{14mu} {energy}}{{the}\mspace{14mu} {predetermined}\mspace{14mu} {value}^{{the}\mspace{14mu} {second}\mspace{14mu} {count}}},$if the cell of the MLC memory is previously applied the first energy.10. The method for programming the MLC memory according to claim 7,wherein a third count is 1 initially, the method further comprising:increasing the third count by 1 after performing the step of applyingthe first energy or performing the step of applying the second energy;determining whether the third count is larger than a limited value ifthe resistance of the cell of the MLC memory is not within the targetrange; wherein the method is terminated if the third count is largerthan the limited value.
 11. A system for programming a multi-level cell(MLC) memory, comprising: a processing unit for setting a first energy;a programming unit for applying the first energy to alter a resistanceof a cell of the MLC memory; and a first counter for storing a firstcount, the a first count being 1 initially and being increased by 1after the cell of the MLC memory is applied the first energy; whereinthe first energy is$\frac{{the}\mspace{14mu} {first}\mspace{14mu} {initial}\mspace{14mu} {energy}}{{the}\mspace{14mu} {predetermined}\mspace{14mu} {value}}$initially and the first energy is changed by increasing or decreasing$\frac{{the}\mspace{14mu} {first}\mspace{14mu} {initial}\mspace{14mu} {energy}}{{the}\mspace{14mu} {predetermined}\mspace{14mu} {value}^{{the}\mspace{14mu} {first}\mspace{14mu} {count}}}.$12. The system for programming the MLC memory according to claim 11,wherein the predetermined value is
 2. 13. The system for programming theMLC memory according to claim 11, wherein the processing unit is furtherfor setting a second energy, the programming unit is further forapplying the second energy to alter the resistance of the cell of theMLC memory, and the system further comprises: a second counter forstoring a second count, the second count being 1 initially and beingincreased by 1 after the cell of the MLC memory is applied the secondenergy; wherein the second energy is$\frac{{the}\mspace{14mu} {second}\mspace{14mu} {initial}\mspace{14mu} {energy}}{{the}\mspace{14mu} {predetermined}\mspace{14mu} {value}}$initially, the second energy is changed by increasing or decreasing$\frac{{the}\mspace{14mu} {second}\mspace{14mu} {initial}\mspace{14mu} {energy}}{{the}\mspace{14mu} {predetermined}\mspace{14mu} {value}^{{the}\mspace{14mu} {second}\mspace{14mu} {count}}},$the programming unit performs a reset procedure on the cell of the MLCmemory by applying the first energy, and the programming unit performs aset procedure on the cell of the MLC memory by applying the secondenergy.
 14. The system for programming the MLC memory according to claim13, wherein the first energy and the second energy are measuredaccording to a current amplitude, a current pulse width, a voltageamplitude or a voltage pulse width.
 15. The system for programming theMLC memory according to claim 13, wherein the first initial energy isidentical to the second initial energy.
 16. The system for programmingthe MLC memory according to claim 13, wherein the first initial energyis different from the second initial energy.
 17. The system forprogramming the MLC memory according to claim 13, wherein the processingunit is further for determining whether the resistance of the cell ofthe MLC memory is within a target range; and the processing unit isfurther for determining whether the resistance of the cell of the MLCmemory is larger than the target range or if the resistance of the cellof the MLC memory is not within the target range; wherein if theresistance of the cell of the MLC memory is larger than the targetrange, then the processing unit sets the second energy; if theresistance of the cell of the MLC memory is not larger than the targetrange, then the processing unit sets the first energy.
 18. The systemfor programming the MLC memory according to claim 17, wherein the firstenergy is changed by increasing$\frac{{the}\mspace{14mu} {first}\mspace{14mu} {initial}\mspace{14mu} {energy}}{{the}\mspace{14mu} {predetermined}\mspace{14mu} {value}^{{the}\mspace{14mu} {first}\mspace{14mu} {count}}},$if the cell of the MLC memory is previously applied the first energy;the first energy is changed by decreasing$\frac{{the}\mspace{14mu} {first}\mspace{14mu} {initial}\mspace{14mu} {energy}}{{the}\mspace{14mu} {predetermined}\mspace{14mu} {value}^{{the}\mspace{14mu} {first}\mspace{14mu} {count}}},$if the cell of the MLC memory is previously applied the second energy.19. The system for programming the MLC memory according to claim 17,wherein the second energy is changed by increasing$\frac{{the}\mspace{14mu} {second}\mspace{14mu} {initial}\mspace{14mu} {energy}}{{the}\mspace{14mu} {predetermined}\mspace{14mu} {value}^{{the}\mspace{14mu} {second}\mspace{14mu} {count}}},$if the cell of the MLC memory is previously applied the second energy;the first energy is changed by decreasing$\frac{{the}\mspace{14mu} {second}\mspace{14mu} {initial}\mspace{14mu} {energy}}{{the}\mspace{14mu} {predetermined}\mspace{14mu} {value}^{{the}\mspace{14mu} {second}\mspace{14mu} {count}}},$if the cell of the MLC memory is previously applied the first energy.20. The system for programming the MLC memory according to claim 17,further comprising: a third counter for storing a third count, the thirdcount being 1 initially and being increased by 1 after the cell of theMLC memory is applied the first energy or the second energy; wherein theprocessing unit is further for determining whether the third count islarger than a limited value if the resistance of the cell of the MLCmemory is not within the target range; the programming unit stopsapplying the first energy or the second energy if the third count islarger than the limited value.